В 90-е сложилась интересная ситуация: вычислительные мощности компьютеров были недостаточны для расчета хоть сколько-нибудь реалистичной графики и в тоже время компакт-диски предоставляли возможность записать огромный для тех времен объем информации. В общем, идея лежала на поверхности: неплохо бы улучшить качество игровой картинки за счёт видео контента и есть куда этот контент записать.
Но была и проблема: типичное игровое разрешение того времени — 320 на 200 точек при палитре из 256 цветов, что даёт нам 64 килобайта на кадр или полтора мегабайта на 25 кадров, при скорости чтения с компакт диска в 150 килобайт в секунду. Т.е. видео надо было жать и жать довольно сильно, а сжав, потом надо суметь декодировать, ведь мы помним, компы были слабенькие и декодирование, например, MPEG им было вообще не по силам. Тем не менее производители видео игр успешно решили проблему недостаточной производительности породив заодно множество видео-кодеков и игровых видео-форматов, некоторые из которых могли проигрываться аж 286-м (прописью: двести восемьдесят шестым) процессором.
Так началась эпоха FMV игр (Full Motion Video Games). Я думаю, многие помнят её ярких представителей: Crime Patrol от American Laser Games, Lost Eden, Cyberia, Novastorm и даже Command & Conquer, в который многие играли только ради видеовставок между миссиями. В те времена выглядело это очень круто. Вау! Вау! Ну а мне было интересно, как же они закодировали это видео, в книжках о мультимедиа приводили то же описание проблемы, что и я выше, но ничего внятного о методах сжатия не писали, видимо, авторы в этом мало понимали и пересказывали какие-то сомнительные слухи.
На самом деле, всё оказалось очень просто, методов было всего три штуки и все очень простые.
<divclass="post post_teaser shortcuts_item focus"id="post_325968"><divclass="post__header"><spanclass="post__time_published">
сегодня в 08:44
</span><h2class="post__title"><ahref="https://habrahabr.ru/flows/develop/"class="post__flow"onclick="if (typeof ga === 'function') { ga('send', 'event', 'flow', 'feed page', 'Разработка'); }">Разработка</a><spanclass="post__title-arrow"> →</span><ahref="https://habrahabr.ru/post/325968/"class="post__title_link">Архаичные алгоритмы сжатия видео эпохи FMV-игр</a></h2><divclass="hubs"><ahref="https://habrahabr.ru/hub/reverse-engineering/"class="hub "title="Вы не подписаны на этот хаб"onclick="if (typeof ga === 'function') { ga('send', 'event', 'hub', 'feed page', 'Реверс-инжиниринг'); }">Реверс-инжиниринг</a><spanclass="profiled_hub"title="Профильный хаб">*</span>,
<ahref="https://habrahabr.ru/hub/gamedev/"class="hub "title="Вы не подписаны на этот хаб"onclick="if (typeof ga === 'function') { ga('send', 'event', 'hub', 'feed page', 'Разработка игр'); }">Разработка игр</a><spanclass="profiled_hub"title="Профильный хаб">*</span>,
<ahref="https://habrahabr.ru/hub/image_processing/"class="hub subscribed"title="Вы подписаны на этот хаб"onclick="if (typeof ga === 'function') { ga('send', 'event', 'hub', 'feed page', 'Обработка изображений'); }">Обработка изображений</a><spanclass="profiled_hub"title="Профильный хаб">*</span>,
<ahref="https://habrahabr.ru/hub/algorithms/"class="hub subscribed"title="Вы подписаны на этот хаб"onclick="if (typeof ga === 'function') { ga('send', 'event', 'hub', 'feed page', 'Алгоритмы'); }">Алгоритмы</a><spanclass="profiled_hub"title="Профильный хаб">*</span></div></div><divclass="post__body post__body_crop "><divclass="content html_format">В 90-е сложилась интересная ситуация: вычислительные мощности компьютеров были недостаточны для расчета хоть сколько-нибудь реалистичной графики и в тоже время компакт-диски предоставляли возможность записать огромный для тех времен объем информации. В общем, идея лежала на поверхности: неплохо бы улучшить качество игровой картинки за счёт видео контента и есть куда этот контент записать. <br><br>
Но была и проблема: типичное игровое разрешение того времени — 320 на 200 точек при палитре из 256 цветов, что даёт нам 64 килобайта на кадр или полтора мегабайта на 25 кадров, при скорости чтения с компакт диска в 150 килобайт в секунду. Т.е. видео надо было жать и жать довольно сильно, а сжав, потом надо суметь декодировать, ведь мы помним, компы были слабенькие и декодирование, например, MPEG им было вообще не по силам. Тем не менее производители видео игр успешно решили проблему недостаточной производительности породив заодно множество видео-кодеков и <ahref="https://wiki.multimedia.cx/index.php/Category:Game_Formats">игровых видео-форматов</a>, некоторые из которых могли проигрываться аж 286-м (прописью: двести восемьдесят шестым) процессором. <br><br>
Так началась эпоха <ahref="https://ru.wikipedia.org/wiki/FMV">FMV игр</a> (Full Motion Video Games). Я думаю, многие помнят её ярких представителей: <ahref="http://www.mobygames.com/game/crime-patrol">Crime Patrol</a> от American Laser Games, <ahref="http://www.mobygames.com/game/lost-eden">Lost Eden</a>, <ahref="http://www.mobygames.com/game/cyberia">Cyberia</a>, <ahref="http://www.mobygames.com/game/novastorm">Novastorm</a> и даже <ahref="http://www.mobygames.com/game/command-conquer">Command & Conquer</a>, в который многие играли только ради видеовставок между миссиями. В те времена выглядело это очень круто. Вау! Вау! Ну а мне было интересно, как же они закодировали это видео, в книжках о мультимедиа приводили то же описание проблемы, что и я выше, но ничего внятного о методах сжатия не писали, видимо, авторы в этом мало понимали и пересказывали какие-то сомнительные слухи. <br><br>
На самом деле, всё оказалось очень просто, методов было всего три штуки и все очень простые.<br></div><divclass="buttons"style="padding: 20px 0 0;"><aclass="button"href="https://habrahabr.ru/post/325968/#habracut">Читать дальше →</a></div></div><divclass="post__footer"><divclass="infopanel_wrapper js-user_"><ulclass="postinfo-panel "id="infopanel_post_325968"><liclass="postinfo-panel__item"><divclass="voting-wjt voting-wjt_infopanel js-voting "><buttontype="button"class="voting-wjt__button voting-wjt__button_plus js-plus"title="Нравится"onclick="if (typeof ga === 'function') { ga('send', 'event', 'voting_location', 'plus' );} posts_vote(this, 325968, '2', 1);"><span>↑</span></button><divclass="voting-wjt__counter js-mark"><buttontype="button"class="voting-wjt__button voting-wjt__button_score js-score"title="Посмотреть результат"onclick="if (typeof ga === 'function') { ga('send', 'event', 'voting_location', 'zero' );} posts_vote(this, 325968, '2', 0); ">—</button></div><buttontype="button"class="voting-wjt__button voting-wjt__button_minus js-minus"title="Не нравится"onclick="if (typeof ga === 'function') { ga('send', 'event', 'voting_location', 'minus' );} posts_vote(this, 325968, '2', -1);"><span>↓</span></button></div></li><liclass="postinfo-panel__item"><divclass="views-count_post"title="Просмотры публикации">1,4k</div></li><liclass="postinfo-panel__item"><divclass="favorite-wjt favorite"><buttontype="button"class="favorite-wjt__button add"title="Добавить в избранное"onclick="return posts_add_to_favorite(this, '2', 325968);"><span>В избранное</span></button><spanclass="favorite-wjt__counter js-favs_count"title="Количество пользователей, добавивших публикацию в избранное">6</span></div></li><liclass="postinfo-panel__item post-author"><atitle="Автор публикации"class="post-author__link"href="https://habrahabr.ru/users/yannmar/"><spanclass="post-author__pic_default user-pic_pink"></span>@yannmar
</a></li><liclass="postinfo-panel__item postinfo-panel__item_comments"><divclass="post-comments"><ahref="https://habrahabr.ru/post/325968/#comments"class="post-comments__link post-comments__link_all"title="Читать комментарии">3</a><ahref="https://habrahabr.ru/post/325968/#comments"class="post-comments__link post-comments__link_new"title="Читать новые комментарии">+3</a></div></li><liclass="postinfo-panel__item postinfo-panel__item_align-right"></li></ul></div></div></div>